package 设计模式.c_抽象方法;

/**
 * 抽象工厂模式：创建的是组合对象，不是一个对象，这些对象都是有关联的
 * 
 * 是在工厂方法模式上又封装了一层，进行了组合，使用抽象工厂模式可以创建出相关联的对象
 * 
 * 抽象工厂
 *  优点：可以将一组相关联的产品封装在同一个接口中，提高了系统的内聚性和可维护性
 *  缺点：不符合开闭原则，如果抽象工厂需要在一组相关联的产品再增加一个产品，就需要修改所有具体工厂类
 * 
 * @author caihe
 * @date 2023/3/8 16:48
 */
public class Test {

    public static void main(String[] args) {
        AbstractFactory copperFactory = new CopperFactory();
        AbstractFactory goldFactory = new GoldFactory();

        System.out.println(copperFactory.getCoin().getDesc());
        System.out.println(copperFactory.getStar().getDesc());

        System.out.println(goldFactory.getCoin().getDesc());
        System.out.println(goldFactory.getStar().getDesc());
        

    }
    
}
